소프트웨어 개발에 있어 하나의 뼈대 역할을 합니다.
공통적인 개발 환경을 제공해주고, 개발에 필요한 화면 구현, DB 연동, 개발 환경들에 공통적인 부분을 제공함으로써 개발 시간과 리소스 비용을 절감해 생산성을 높여주는 것입니다.
자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션입니다.
엔터프라이즈 애플리케이션: 기업 또는 정부와 같은 기업 환경에서 작동하도록 설계된 대규모 소프트웨어 시스템 플랫폼입니다.
스프링 자체가 가볍거나 규모가 작은 코드로 이루어진 것은 아닙니다.
오히려 스프링은 세분화되고 복잡하고 방대한 코드를 가진 프레임워크입니다. 그럼에도 경량화가 특징인 이유는 기존 자바 엔터프라이즈 기술의 불필요한 복잡함에 반대되는 개념에서 시작되었습니다.
주류 기술이었던 EJB는 고가의 무거운 자바 서버(WAS)가 필요했고, 다루기 힘든 설정파일 구조, 패키징, 불편한 배포 등의 단점이 있었습니다.
스프링은 톰캣과 같은 단순한 서버 환경에서도 동작하며, 단순한 개발환경으로도 엔터프라이즈 애플리케이션을 개발하는데 충분합니다. 또 EJB 등의 기존 프레임워크에서 만들어진 코드에 비해 코드량이 적고 단순하기도 합니다.
즉, 기존에 비해 빠르고 간편하게 애플리케이션을 개발할 수 있어 생산성이 뛰어난 프레임워크입니다.
@를 이용한 주석을 통해 특별한 의미를 부여하는 것입니다.
주석처럼 코드에 달아 클래스, 메소드, 변수 등에 특별한 의미와 기능을 주입합니다. 또 해석되는 시점을 정할 수도 있습니다.
어노테이션은 메타 데이터로서의 기능을 주로 목적으로 사용합니다. 프로그램 실행 관점에서 보면 프로그램이 처리할 메인 데이터가 아니라 실행 과정에서 데이터를 어떻게 처리할 것인지에 대해 알려주는 서브 데이터라고 볼 수 있습니다.
메타 데이터: 데이터를 위한 데이터를 의미하며, 테이터에 대한 설명을 의미하는 데이터입니다.
어노테이션의 용도는 크게 다음과 같이 정리할 수 있습니다.
어노테이션은 유효성 검사를 쉽게 할 수 있도록하며, 코드를 깔끔하게 합니다.
프로그래머들에게 자신의 코드에 대한 정보를 코드에 직접 기술할 기회를 제공하기 위함입니다.
어노테이션으로 메타데이터를 기술하기 이전엔 주석을 이용한다던지 transient 키워드를 이용한다던지 여러 방법이 일관성 없이 사용되었습니다.
그 중 주로 XML이 사용되었는데 그 방법 또한 좋은 방법은 아니었습니다.
프로그램의 규모가 방대해지면서 XML이 가지는 설정 정보의 양이 많아지고 또 코드와 XML 사이의 디커플링이 발생되며 어플리케이션의 유지보수를 어렵게 했습니다.
스프링에서도 제공해주는 어노테이션이 있으며, 직접 만들 수 있습니다.
참고
- https://www.castingn.com/sourcing/kkultip_detail/110
- https://www.techopedia.com/definition/24804/enterprise-application-ea
- https://hyunc87.tistory.com/10
- https://ssad.tistory.com/51
- https://m.blog.naver.com/PostView.nhn?blogId=m1nsuk&logNo=221572976740&proxyReferer=https:%2F%2Fwww.google.com%2F
- https://hamait.tistory.com/315
- https://freestrokes.tistory.com/79
감사합니다.
Text by Chaelin. Photographs by Chaelin, Unsplash.